﻿using System.Collections.Generic;
using BSDS.Core.Services.BingRestApi.Schema;

namespace BSDS.Core.Services.BingRestApi
{
    /// <summary>
    /// A service that deals with finding locations based on given criteria.
    /// </summary>
    public interface ILocationService
    {
        /// <summary>
        /// Finds locations under the given address.
        /// </summary>
        /// <param name="key">The provider authorization key.</param>
        /// <param name="countryRegion">The ISO country code for the country. For a list of ISO country codes.</param>
        /// <param name="adminDistrict">The subdivision name in the country or region for an address. This element is typically treated as the first order administrative subdivision, but in some cases it is the second, third, or fourth order subdivision in a country, dependency, or region.</param>
        /// <param name="locality">The locality, such as the city or neighborhood, that corresponds to an address.</param>
        /// <param name="adressLine">The official street line of an address relative to the area, as specified by the Locality, or PostalCode, properties. Typical use of this element would be to provide a street address or any official address.</param>
        /// <param name="postalCode">The post code, postal code, or ZIP Code of an address.</param>
        /// <returns></returns>
        IEnumerable<Location> FindLocationByAddress(string countryRegion, string adminDistrict, string locality, string adressLine, string postalCode);
    }
}
